package com.ruoyi.energy.controller;

import com.alibaba.nacos.shaded.com.google.common.collect.Maps;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.energy.entity.EnergyChildrenByTypeDto;
import com.ruoyi.energy.entity.EnergyOverviewDto;
import com.ruoyi.energy.entity.EnergyTotalAnalyseDto;
import com.ruoyi.energy.query.EnergyAnalysisQuery;
import org.apache.commons.compress.utils.Lists;
import org.aspectj.weaver.loadtime.Aj;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;
import java.util.Optional;

/**
 * 能耗分析
 */
@RequestMapping
@RestController
public class EnergyAnalysisController extends BaseController {

    /**
     * 介质消耗
     * @param query
     * @return
     */
    @GetMapping("/energyAnalysis/energyLstPage")
    public TableDataInfo energyLstPage(@RequestBody EnergyAnalysisQuery query){
        startPage();
        return getDataTable(null);
    }

    /**
     * 总览分析 - 概况
     * @param query
     * @return
     */
    @GetMapping("/energyAnalysis/energyLstPage")
    public AjaxResult energyTotalAnalyseList(@RequestBody EnergyAnalysisQuery query){
        EnergyTotalAnalyseDto dto = new EnergyTotalAnalyseDto();
        return AjaxResult.success(dto);
    }

    /**
     * 总览分析 - 子资产概况
     * @return
     */
    @GetMapping("/energyAnalysis/energyChildrenByType")
    public AjaxResult energyChildrenByType(@RequestBody EnergyAnalysisQuery query){
        EnergyChildrenByTypeDto dto = new EnergyChildrenByTypeDto();
        return AjaxResult.success(dto);
    }

    /**
     * 总览分析 - 历史值
     * 能耗总览分析类型小时数据查询
     * @param query
     * @return
     */
    @GetMapping("/energyAnalysis/energyHour")
    public AjaxResult energyHour(@RequestBody EnergyAnalysisQuery query){
        EnergyOverviewDto dto = new EnergyOverviewDto();
        return AjaxResult.success(dto);
    }

    /**
     * 生产消耗成本
     * @param query
     * @return
     */
    @GetMapping("/energyAnalysis/prodConsumption")
    public AjaxResult prodConsumption(@RequestBody EnergyAnalysisQuery query ){
        Map map = Maps.newHashMap();
//        Optional.ofNullable(map).ifPresent(obj->{
//
//        });
        return AjaxResult.success(map);
    }

    /**
     * 能耗比重分析
     * @return
     */
    @GetMapping("/energyAnalysis/prodConsumption")
    public AjaxResult energyProportion(@RequestBody EnergyAnalysisQuery query){
        Map maplist = Maps.newHashMap();
        // list
        Map map = Maps.newHashMap();
        // 产量(台)
        map.put("actual",1);
        // 单车能耗成本
        map.put("avgEnergy",11);
        // 电能成本
        map.put("electricityEnergy",12);
        // 天然气成本
        map.put("gasEnergy",123);
        // 非生产能耗成本
        map.put("noneProdEnergy",1);
        // 生产能耗成本
        map.put("prodEnergy",1);
        // 总成本
        map.put("totalEnergy",1);
        // 水能耗成本
        map.put("waterEnergy",1);
        maplist.put("2022-01",map);
        return AjaxResult.success(maplist);
    }

    /**
     * 月产能能耗分析
     * @param query
     * @return
     */
    @GetMapping("/energyAnalysis/energyMonth")
    public AjaxResult energyMonth(@RequestBody EnergyAnalysisQuery query){
        List<Map> listMap = Lists.newArrayList();
        // list
        Map map = Maps.newHashMap();
        // 日期维度
        map.put("date",1);
        // 实际产量
        map.put("actual",11);
        // 单车能耗成本呢
        map.put("completion",12);
        // 达成率
        map.put("totalEnergy",123);
        // 生产天数
        map.put("days",1);
        // 预计产量
        map.put("forecast",1);
        // 总成本
        map.put("totalEnergy",1);
        listMap.add(map);
        return AjaxResult.success(listMap);
    }

    /**
     * 周产能能耗成本
     * @param query
     * @return
     */
    @GetMapping("/energyAnalysis/energyWeek")
    public AjaxResult energyWeek(@RequestBody EnergyAnalysisQuery query){
        List<Map> listMap = Lists.newArrayList();
        // list
        Map map = Maps.newHashMap();
        // 日期维度
        map.put("date","15");
        // 实际产量
        map.put("actual",11);
        // 单车能耗成本呢
        map.put("completion",12);
        // 达成率
        map.put("totalEnergy",123);
        // 生产天数
        map.put("days",1);
        // 预计产量
        map.put("forecast",1);
        // 总成本
        map.put("totalEnergy",1);
        listMap.add(map);
        return AjaxResult.success(listMap);
    }

    /**
     * 日产能能耗成本
     * @param query
     * @return
     */
    @GetMapping("/energyAnalysis/energyDay")
    public AjaxResult energyDay(@RequestBody EnergyAnalysisQuery query){
        List<Map> listMap = Lists.newArrayList();
        // list
        Map map = Maps.newHashMap();
        // 日期维度
        map.put("date","2021-01-01");
        // 实际产量
        map.put("actual",11);
        // 单车能耗成本呢
        map.put("completion",12);

        listMap.add(map);
        return AjaxResult.success(listMap);
    }

}
